package com.seafood.service;

import com.seafood.common.PageResult;
import com.seafood.dto.ProductDTO;
import com.seafood.dto.ProductSearchDTO;
import com.seafood.entity.Product;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 产品服务接口
 */
public interface ProductService {
    
    /**
     * 创建产品
     */
    ProductDTO createProduct(ProductDTO productDTO);
    
    /**
     * 更新产品
     */
    ProductDTO updateProduct(Long id, ProductDTO productDTO);
    
    /**
     * 删除产品
     */
    void deleteProduct(Long id);
    
    /**
     * 根据ID获取产品
     */
    ProductDTO getProductById(Long id);
    
    /**
     * 分页查询产品
     */
    PageResult<ProductDTO> getProducts(Integer page, Integer size);
    
    /**
     * 根据分类查询产品
     */
    PageResult<ProductDTO> getProductsByCategory(Long categoryId, Integer page, Integer size);
    
    /**
     * 搜索产品
     */
    PageResult<ProductDTO> searchProducts(ProductSearchDTO searchDTO);
    
    /**
     * 获取热门产品
     */
    List<ProductDTO> getHotProducts(Integer limit);
    
    /**
     * 获取推荐产品
     */
    List<ProductDTO> getRecommendedProducts(Integer limit);
    
    /**
     * 获取低库存产品（管理员用）
     */
    List<ProductDTO> getLowStockProducts(Integer threshold);
    
    /**
     * 更新产品库存
     */
    void updateProductStock(Long productId, Integer quantity);
    
    /**
     * 减少产品库存
     */
    void reduceProductStock(Long productId, Integer quantity);
    
    /**
     * 增加产品库存
     */
    void increaseProductStock(Long productId, Integer quantity);
    
    /**
     * 转换实体为DTO
     */
    ProductDTO convertToDTO(Product product);
    
    /**
     * 转换DTO为实体
     */
    Product convertToEntity(ProductDTO productDTO);
}